package stardust.product.platform.webc;

import stardust.product.platform.webc.log.RequestSnapshot;


/**
 * 资源访问请求接口。
 * <br/>
 * 对资源访问的请求封装，实现此接口可增加对不同类型访问请求的支持。
 * <br/>
 * 例如：Web服务、消息事件、JNDI等。
 * <p/>
 * @author ChenChang
 */
public interface WebcRequestHandler
{

  /**
   * 处理容器传来的请求。
   * <p/>
   * @param uri 请求来源的URI。
   * @param reference Webc入口点映射，它封装了相关的处理程序信息，是一个<tt>WebcResourceReference</tt>标注类型。
   * <p/>
   * @return 返回处理程序的执行结果，在实现时不推荐对结果做任何转换，应直接返回处理程序执行结果。
   */
  Object process(String uri, WebcResourceReference reference);

  /**
   * 如果处理程序没有指定响应渲染器，将使用请求提供的默认渲染器。
   * <br/>
   * 如果请求不能返回响应渲染器，那么容器将抛出{@link WebcException}异常。
   * <p/>
   * @return 返回请求提供的默认渲染器。
   */
  RenderHandle getDefaultRenderer();
  
  WebcContext getWebcContext();

}
